IPv6対応のVPCをCloudFormationで作成してみた
はじめに
AWSチームのすずきです。
2017年7月に東京リージョンのVPCでも利用可能となったIPv6。
CloudFormationを利用して設置する機会がありましたので、紹介させて頂きます。
構成図
- Frontend、Application、Datastoreの3区分、Multi-AZ構成の6サブネットで構成されたVPCを作成します。
IPv6
- FrontendSubnetは、Internet Gatewayを利用します
- ApplicationSubunetは、受信トラフィックをブロックし送信トラフィックのみを許可するEgress-Only Internet Gateway を利用する設定としました。
IPv4
- FrontendSubnetは、Internet Gatewayを利用します
- ApplicationSubunet は、受信トラフィックのブロックはセキュリティグループで実現する前提でInternet Gatewayを利用します。
- NAT Gateway の導入に備え、S3用のVPCエンドポイントのみ用意しました。
CloudFormation テンプレート
- IPv6対応のVPCとセキュリティグループを設置します
- SSHの接続許可は、JPNE IPV6インターネット接続の割当範囲で設定しました。
ipv6-validation-vpc.yaml
VPC設定
- IPv4は「/20」のCIDRブロックをVPCに付与し、6つのサブネットに「/24」のブロックを設定しました。
- IPv6は、Amazon の提供する「/56」のCIDRブロックを「/64」に分割し、各サブネットに割り当てました。
- IPv4、v6ともにCIDR設定は決め打ちで実施しています。CloudFormationでサブネット設定を更新した場合、制限が生じる可能性がある点はご注意ください。
セキュリティグループ
Frontend用
- Webサービス(HTTP、HTTPS)を、IPv4、IPv6に制限なく公開する設定を用意しました。
Application用
- Frontend のELB、EC2からのHTTP接続を、IPv4、IPv6とも許可しました
- 踏台となるBastion セキュリティグループを有す環境からのSSH接続を許可しました。
Datastore用
- Application サブネットからのDB接続を許可しました。
Basion用
- CloudFormationのパラメータで指定したIPv6アドレスからのSSH接続を許可しました。
Outputs設定
- 当スタックで作成したVPCのリソース、別のCloudFormationテンプレートでの利用性をあげるため、Export 設定を行いました。
CreateStack
- ローカルにダウンロードしたipv6-validation-vpc.yaml をS3にアップロードし、テンプレートとして利用しました。
- SSHの接続許可は、NTT東西のフレッツ網向けにIPv6サービスを提供しているJPNEのIP(/16)を仮設定しました。
- スタックの「作成」が完了すると、IPv6に対応したVPCが完成します。
まとめ
IPv6対応に対応したVPC、CloudFormationで設置する事ができました。 EC2、ELBでIPv6の動作確認の機会がありましたら、当テンプレートをお試しください。
またIPv6に対応した、ELB(ALB)、EC2(Bastion、Web)のテンプレートについても、追って紹介させて頂きます。